package com.yjtc.cbg.commonutildemo.Widget;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.TextView;

/**
 * Created by chenboge on 16/7/31.
 */
public class CenterTextDrawableView extends TextView {

    public CenterTextDrawableView(Context context) {
        this(context,null);
    }

    public CenterTextDrawableView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public CenterTextDrawableView(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        Drawable[] compoundDrawables = getCompoundDrawables();
        //drawable的宽度
        int drawableWidth=0;
        //图片加上文本内容的总体宽度
        int bodyWidth=0;
        //获取drawableadding，图片和内容区域间的间隙
        int drawablePaddingWidth = getCompoundDrawablePadding();
        //获取左上右下的drawable
        Drawable leftDrawable = compoundDrawables[0];
        Drawable topDrawable = compoundDrawables[1];
        Drawable rightDrawable = compoundDrawables[2];
        Drawable buttomDrawable = compoundDrawables[3];
        //获取文本内容的宽度
        int textWidth = (int) getPaint().measureText(this.getText().toString());
        //判断不同方位的图片，图片在左方
        if(null!=leftDrawable) {
            //设置textview内容区域开始位置
            setGravity(Gravity.START|Gravity.CENTER_VERTICAL);
            drawableWidth = leftDrawable.getIntrinsicWidth();
            bodyWidth = drawableWidth + textWidth;
            //getwidth（）获取textview的总体宽度，getWidth()-bodyWidth-drawablePaddingWidth是除去内容和图片区域后剩余的宽度空间，最后使内容区域偏移，使其剧中
            canvas.translate((getWidth()-bodyWidth-drawablePaddingWidth)/2,0);
        }
        //判断不同方位的图片，图片在上方
        if(null!=topDrawable) {
            //设置textview内容区域开始位置
            setGravity(Gravity.CENTER_HORIZONTAL);
            drawableWidth = topDrawable.getIntrinsicWidth();
            bodyWidth = drawableWidth + textWidth;
            //getwidth（）获取textview的总体宽度，getWidth()-bodyWidth-drawablePaddingWidth是除去内容和图片区域后剩余的宽度空间，最后使内容区域偏移，使其剧中
           // canvas.translate((getWidth()-bodyWidth-drawablePaddingWidth)/2,0);
        }
        //判断不同方位的图片，图片在右方
        if(null!=rightDrawable) {
            //设置textview内容区域开始位置
            setGravity(Gravity.END|Gravity.CENTER_VERTICAL);
            drawableWidth = rightDrawable.getIntrinsicWidth();
            bodyWidth = drawableWidth + textWidth;
            //getwidth（）获取textview的总体宽度，getWidth()-bodyWidth-drawablePaddingWidth是除去内容和图片区域后剩余的宽度空间，最后使内容区域偏移，使其剧中
            canvas.translate(-(getWidth()-bodyWidth-drawablePaddingWidth)/2,0);
        }
        //判断不同方位的图片，图片在下方
        if(null!=buttomDrawable) {
            //设置textview内容区域开始位置
            setGravity(Gravity.START);
            drawableWidth = buttomDrawable.getIntrinsicWidth();
            bodyWidth = drawableWidth + textWidth;
            //getwidth（）获取textview的总体宽度，getWidth()-bodyWidth-drawablePaddingWidth是除去内容和图片区域后剩余的宽度空间，最后使内容区域偏移，使其剧中
            canvas.translate((getWidth()-bodyWidth-drawablePaddingWidth)/2,0);
        }
        super.onDraw(canvas);
    }
}
